package com.ionehe.group.common.notify.message.factory;

import com.ionehe.group.common.notify.message.consumer.Consumer;
import com.ionehe.group.common.notify.message.consumer.OrderConsumer;
import com.ionehe.group.common.notify.message.producer.OrderProducer;
import com.ionehe.group.common.notify.message.producer.Producer;
import com.ionehe.group.common.notify.message.producer.TransactionProducer;
import org.apache.rocketmq.client.producer.TransactionCheckListener;

import java.util.Properties;

/**
 * Copyright (c) 2021 ionehe.com
 * Date: 2021/4/21
 * Time: 1:22 下午
 *
 * @author 2021年 <a href="mailto:a@ionehe.com">秀</a>
 * 【工厂类】
 */
public interface Factory {
    /**
     * 创建生产者
     *
     * @return 生产者
     */
    Producer createProducer();

    /**
     * 创建消费者
     *
     * @return
     */
    Consumer createConsumer();

    /**
     * 创建顺序型生产者
     *
     * @return
     */
    OrderProducer createOrderProducer();

    /**
     * 创建顺序型消费者
     *
     * @return
     */
    OrderConsumer createOrderedConsumer();

    /**
     * 创建事务型生产者
     *
     * @param paramProperties
     * @param paramTransactionCheckListener
     * @return
     */
    TransactionProducer createTransactionProducer(Properties paramProperties, TransactionCheckListener paramTransactionCheckListener);
}